perm filename KI.SAI[KI,ALS]2 blob sn#093377 filedate 1974-03-26 generic text, type T, neo UTF8
00010	BEGIN "KI"
00020	DEFINE ⊂="COMMENT",CR="'15",LF="'12", CRLF="CR&LF",TB="'11";
00030	⊂ The master control program for the KI KA KU system. This program
00040	calls on various subroutines to perform the required functions of
00050	a simple speech communication system which can converse with a speaker
00060	after a minimum amount of adaptive learning in a very simple code
00070	involving the principle vowel sounds pronounced following the stop
00080	consonant "K". The hope is that the system can operate over the
00090	telephone in a reasonably noisy environment with a group of perhaps 100
00100	different speakers;
00110	
00120	REQUIRE "TRACK[KI,ALS]" LOAD_MODULE;
00125	REQUIRE "HEAR[KI,ALS]" LOAD_MODULE;
00130	EXTERNAL PROCEDURE TRACK;
00135	EXTERNAL PROCEDURE HEAR;
00140	INTERNAL INTEGER SPX;
00150	INTERNAL INTEGER ARRAY SPOOR[0:6,0:20];
00160	INTEGER CHAN1,CHAN2,I,J,K,L,Z,EOF,BRCHR; BOOLEAN ER;
00170	INTERNAL INTEGER CHAN3;
00180	STRING READ;
00190	INTEGER ARRAY ADSAY,ADHEAR[0:5];
00200	
00210	LABEL STARTP;
00220	
00230	
00240	PROCEDURE SAY(STRING UTTER);
00250	BEGIN "SAY"
00260	
00270	CLOSE(CHAN1) ; OPEN(CHAN1,"DSK",0,0,1,0,EOF,0);
00280	ENTER(CHAN1,"KIFILE.TMP",0);
00290	⊂ KIFILE to contain name of file to say;
00300	OUT(CHAN1,UTTER);
00310	CLOSE(CHAN1); RELEASE(CHAN1);
00320	  COMMENT Preset ESC 4 U ;
00330	  START_CODE MOVEI 0,ADSAY[0]; CALLI '400004; END;
00340	  ⊂ This starts program KISAY as a separate job;
00350	END "SAY";
00360	
00370	
00540	
00550	
00560	STRING PROCEDURE HEARIT(STRING EH);
00570	BEGIN "HEARIT"
00580	HEAR;
00590	IF EH="YES" THEN BEGIN "YES"
00600	
00610	RETURN("YES");
00620	END "YES"  ELSE BEGIN "NO"
00630	OUTSTR("In else branch for a NO answer"&CRLF);
00640	END "NO";
00650	END "HEARIT";
00660	
00670	PROCEDURE ASKNAM;
00680	BEGIN "ASK"
00690	
00700	OUTSTR("In procedure ASKNAM"&crlf);
00710	
00720	END "ASK";
00730	
00740	
00750	
00760	PROCEDURE TABLE;
00770	BEGIN
00780	
00790	INTEGER I,J;
00800	
00810	OUTSTR(CRLF&TB&"Track output"&crlf&TB&"Sample"&TB&"F1"&TB&"F2"&TB&"F3"
00820	  &TB&"A1"&TB&"A2"&TB&"A3"&CRLF);
00830	Z←2500%256;
00840	FOR J←0 STEP 1 UNTIL 20 DO BEGIN
00850	  IF SPOOR[1,J]=0 THEN DONE;
00860	  OUTSTR(CVS(J)&TB);
00870	  FOR I←0 STEP 1 UNTIL 6 DO OUTSTR(CVS(SPOOR[I,J])&TB);
00880	  OUTSTR(CRLF);
00890	  END;
00900	END;
00910	
00920	INTEGER PROCEDURE OPENUP;
00930	BEGIN
00940	INTEGER I; BOOLEAN ER;
00950	
00960	
00970	I←0; ER←1;
00980	WHILE ER DO BEGIN "GETFIL"
00990	  CLOSE(CHAN3); OPEN(CHAN3,"DSK",'10,2,0,0,0,EOF);
01000	  LOOKUP(CHAN3,"LISTEN.TMP[KI,ALS]",ER);
01010	  I←I+1; IF I=4 THEN OUTSTR("PROGRAM HUNG ON LISTENING, WILL TRY SOME MORE");
01020	  IF I=8 THEN  DONE "GETFIL";
01030	  START_CODE MOVEI 0,1; '047000000031; END;
01040	  ⊂ Sleep for 1 more second;
01050	  END "GETFIL";
01060	outstr("The file LISTEN should be opened now"&crlf);
01070	IF I≥8 THEN RETURN(1) ELSE RETURN(0);
01080	END;
01090	
01100	PROCEDURE SAVEIT(STRING READ);
01110	BEGIN
01120	
01130	INTEGER CHAN4,EOF,I,J; BOOLEAN ER;
01140	INTEGER ARRAY NAMES[0:100];
01150	
01160	CHAN4←4;
01170	CLOSE(CHAN4); OPEN (CHAN4,"DSK",'10,2,0,0,0,EOF);
01180	LOOKUP(CHAN4,"KILIST.BCD[KI,ALS]",ER);
01190	ARRYIN(CHAN4,NAMES[0],100);
01200	FOR I←0 STEP 1 UNTIL 99 DO IF NAMES[I]=0 THEN DONE;
01210	NAMES[I]←CVSIX(READ);
01220	
01230	CLOSE(CHAN4); OPEN(CHAN4,"DSK",'10,0,2,0,0,0);
01240	ENTER(CHAN4,"KILIST.BCD[KI,ALS]",0);
01250	ARRYOUT(CHAN4,NAMES[0],100);
01260	CLOSE(CHAN4);
01270	
01280	CLOSE(CHAN3); OPEN(CHAN3,"DSK",'10,1,1,0,0,EOF);
01290	LOOKUP(CHAN3,"LISTEN.TMP[KI,ALS]",0);
01300	CLOSE(CHAN3); RENAME(CHAN3,READ&".DAT",0,0);
01310	RELEASE(CHAN3);
01320	END;
01330	
     

00010	CHAN1←1; CHAN2←2; CHAN3←3; Z←2500%256;
00020	STDBRK(1);
00030	
00040	ADSAY[0]←CVSIX("DSK");
00050	ADSAY[1]←CVSIX("KISAY ");
00060	ADSAY[2]←CVSIX("DMP") LOR '4;
00070	ADSAY[3]←0;
00080	ADSAY[4]←CVSIX(" KIALS");
00090	ADSAY[5]←CVSIX(" KIALS");
00100	
00110	ADHEAR[0]←CVSIX("DSK");
00120	ADHEAR[1]←CVSIX("KIHEAR");
00130	ADHEAR[2]←CVSIX("DMP") LOR '4;
00140	ADHEAR[3]←0;
00150	ADHEAR[4]←CVSIX(" KIALS");
00160	ADHEAR[5]←CVSIX(" KIALS");
00170	
00180	
00190	STARTP:
00200	
00210	OUTSTR("Ready to say hello."&crlf);
00220	OUTSTR("Actually it will recite SEG1."&CRLF);
00230	 SAY("HELLO");
00240	⊂ HELLO says Hello, This is KIKAKU. Have you talked to me before? ;
00250	 HEAR;
00260	OPENUP;
00270	 TRACK;
00280	TABLE; INCHWL;
00290	⊂ ASKNAM;
00300	
00310	
00320	END;